8.15 高级表格横向拼接-2(按指定列关联)
如果在两表拼接时,不是以行索引为连接,而是指定的列为连接,则有以下几种方法:
1、 两表同名单列关联
2、 两表同名多列关联
3、 两表单列不同名关联
4、 两表多列不同名关联
import pandas as pd
df_l=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","分数表" )
df_r=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","信息表" )
print (df_l)
print (df_r)
df=pd.merge(
left =df_l,
right =df_r,
on=[ "姓名","部门" ] #两表同名多列关联,即关键字为两列合并多条件匹配
)
print (df)
返回:
工号 | 姓名 | 部门 | 分数 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 99 |
1 | NED03 | 王麻子 | IT部 | 97 |
2 | NED05 | 小华 | 销售部 | 96 |
编号 | 姓名 | 部门 | 籍贯 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 山东 |
1 | NED02 | 李四 | 财务部 | 四川 |
2 | NED03 | 王麻子 | IT部 | 湖南 |
3 | NED04 | 小曾 | 销售部 | 上海 |
4 | NED05 | 小华 | 销售部 | 北京 |
工号 | 姓名 | 部门 | 分数 | 编号 | 籍贯 | |
---|---|---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 99 | NED01 | 山东 |
1 | NED03 | 王麻子 | IT部 | 97 | NED03 | 湖南 |
2 | NED05 | 小华 | 销售部 | 96 | NED05 | 北京 |
import pandas as pd
df_l=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","分数表" )
df_r=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","信息表" )
print (df_l)
print (df_r)
df=pd.merge(
left =df_l,
right =df_r,
left_on =[ "工号","姓名","部门" ],
right_on =[ "编号","姓名","部门" ], #两表多列不同名关联
)
print (df)
返回:
工号 | 姓名 | 部门 | 分数 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 99 |
1 | NED03 | 王麻子 | IT部 | 97 |
2 | NED05 | 小华 | 销售部 | 96 |
编号 | 姓名 | 部门 | 籍贯 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 山东 |
1 | NED02 | 李四 | 财务部 | 四川 |
2 | NED03 | 王麻子 | IT部 | 湖南 |
3 | NED04 | 小曾 | 销售部 | 上海 |
4 | NED05 | 小华 | 销售部 | 北京 |
工号 | 姓名 | 部门 | 分数 | 编号 | 籍贯 | |
---|---|---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 99 | NED01 | 山东 |
1 | NED03 | 王麻子 | IT部 | 97 | NED03 | 湖南 |
2 | NED05 | 小华 | 销售部 | 96 | NED05 | 北京 |